﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using MvcDemo.Models;
using Newtonsoft.Json;

namespace MvcDemo.Controllers
{
    public class NewsController : Controller
    {
        // GET: News
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult PageDemo()
        {
            return View();
        }

        public JsonResult GetData()
        {
            //手动创建一个数据集合
            List<NewDto> list = new List<NewDto>();
            List<string> temp;
            for (int i = 0; i < 60; i+=3)
            {
                temp = new List<string>();
                for (int j = 0; j < i%4; j++)
                {
                    temp.Add("标签" + i);
                }
               
                list.Add(new NewDto(){Age=i,Info = "新闻内容"+i,Title = "标题"+i,Tabs = temp.ToArray(),TabStrings = string.Join(",",temp)});
            }

            return Json(list);
        }

        public JsonResult GetPageData(NewsPageInput input)
        {
            //手动创建一个数据集合
            List<NewDto> list = new List<NewDto>();
            List<string> temp;
            int numMax = 101;//最多100条数据;

            //模拟分页数据
            for (int i = 1; i <= numMax; i++)
            {
                temp = new List<string>();
                for (int j = 0; j < i % 4; j++)
                {
                    temp.Add("标签" + i);
                }

                list.Add(new NewDto() { Age = i, Info = "新闻内容" + i, Title = "标题" + i, Tabs = temp.ToArray(), TabStrings = string.Join(",", temp) });
            }

            // 根据页码和每页大小计算起始索引
            int startIndex = (input.PageIndex - 1) * input.PageSize;
            // 从起始索引处开始获取指定数目的项
            var pageItems = list.GetRange(startIndex, Math.Min(input.PageSize, numMax - startIndex));

            return Json(new PageBaseOutput<NewDto>() { List = pageItems, TotalPages = (numMax / input.PageSize) + (numMax % input.PageSize == 0 ? 0 : 1) });
        }
        public ActionResult Add()
        {

            if (Request["id"] != null)
            {
                ViewBag.title2 = "新闻标题";
                ViewBag.info = "我是新闻内容";
                ViewBag.age = 12;
            }

            return View();
        }

        [HttpPost]
        public ActionResult AddNews(string title,string info,int age)
        {
            ViewBag.code = title+info+age;//这里随意返回什么值，只是做个提醒
            ViewBag.result = "1";//这里随意返回什么值，只是做个提醒
            return View("Add");//这里是返回到原来的view
            //return Json("json数据");//如果是ajax提交，可以返回Json
        }


        public ActionResult Add1()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Add1(News news)
        {
            //注意这里action名称，不是AddNews。Add1()和Add1(News news) 其实可以理解成2个不同的url！！

            ViewBag.code = JsonConvert.SerializeObject(news);//这里随意返回什么值，只是做个提醒
            //ViewBag.result = "1";//这个可以省略掉，直接判断code即可
            return View();
           
        }

        public ActionResult Add2()
        {
            if (Request["id"] != null)
            {
                News news = new News();
                news.Age = 12;
                news.Info = "我是新闻内容";
                news.Title = "新闻标题";
                return View(news);
            }
            return View();
        }

        [HttpPost]
        public ActionResult Add2(News news)
        {
            //注意这里action名称，不是AddNews。Add1()和Add1(News news) 其实可以理解成2个不同的url！！

            ViewBag.code = JsonConvert.SerializeObject(news);//这里随意返回什么值，只是做个提醒
            //ViewBag.result = "1";//这个可以省略掉，直接判断code即可
            return View();

        }

        public ActionResult Add3()
        {
            if (Request["id"]!=null)
            {
                ViewBag.title2 = "新闻标题";
                ViewBag.info = "我是新闻内容";
                ViewBag.age = 12;
            }

            return View();
        }

        [HttpPost]
        public ActionResult Add3(News news)
        {
            //注意这里action名称，不是AddNews。Add1()和Add1(News news) 其实可以理解成2个不同的url！！

            ViewBag.code = JsonConvert.SerializeObject(news);//这里随意返回什么值，只是做个提醒
            //ViewBag.result = "1";//这个可以省略掉，直接判断code即可
            return View();

        }

        public ActionResult Add4()
        {
            if (Request["id"]!=null)
            {
                ViewBag.title2 = "新闻标题";
                ViewBag.info = "我是新闻内容";
                ViewBag.age = 12;
            }

            return View();
        }

        [HttpPost]
        public ActionResult Add4(FormCollection fc)
        {
            //注意这里action名称，不是AddNews。Add1()和Add1(News news) 其实可以理解成2个不同的url！！

            ViewBag.code = JsonConvert.SerializeObject(fc["title"]+fc["info"]+fc["age"]);//这里随意返回什么值，只是做个提醒
            //ViewBag.result = "1";//这个可以省略掉，直接判断code即可
            return View();

        }
        
        [HttpPost]
        public ActionResult AddJson(string title, string info, int age)
        {
            //由于是ajax请求，所以不是form表单提交，不能用FormCollection接收post提交参数值。用多参数或强类型实体都行

            //如果想输出html或字符串，可以返回下面的方法。
            return Content(title + info + age);
        } 
        
        /*
        public ActionResult AddJson(News news)
        {
            //由于是ajax请求，所以不是form表单提交，不能用FormCollection接收post提交参数值。用多参数或强类型实体都行

            return Json(news);
        }
        */
    }
}